// pages/profile/index.ts
Page({
  data: {
    userInfo: {
      nickName: '',
      avatar: ''
    }
  },
  onLoad() {
    this.setData({
      userInfo: wx.getStorageSync('userInfo')
    })
  },
  async getUserNickName(ev) {
    const nickName = ev.detail.value
    if (nickName !== '微信用户') {
      // 坑：获取不到昵称？切换小程序基础调试库的版本或 Vant 版本尝试，如果还是不行，用原生 input 去获取
      // #1 拿到用户昵称
      // #2 调用接口上传到后端
      await wx.http.put('/userInfo', {
        nickName
      })
      // #3 把昵称设置到 data 中
      this.setData({
        'userInfo.nickName': nickName
      })
      // #4 渲染
    }
  },
  getUserAvatar(ev) {
    this.uploadAvatar(ev.detail.avatarUrl)
  },
  uploadAvatar(avatarUrl) {
    const app = getApp()
    // 小程序中上传文件必须用 wx.uploadFile
    wx.uploadFile({
      url: wx.http.baseURL + '/upload',
      filePath: avatarUrl,
      header: {
        Authorization: app.token
      },
      name: 'file', // 后端会通过 file 获取文件信息，看接口文档
      // 除了文件信息，其他参数一律写到 formData 中
      formData: {
        type: 'avatar'
      },
      success: (res) => {
        const resResult = JSON.parse(res.data)
        this.setData({
          'userInfo.avatar': resResult.data.url
        })
      }
    })
  }
})